package com.example.migrator.service;

import java.util.List;

public interface MigrationService<T> {

    /**
     * 从Oracle数据库迁移数据到MySQL数据库
     * @param tableName 表名
     * @param batchSize 批量大小
     * @return 迁移的数据总量
     */
    long migrateData(String tableName, int batchSize);

    /**
     * 从Oracle数据库迁移数据到MySQL数据库（带条件）
     * @param tableName 表名
     * @param whereClause WHERE子句条件
     * @param batchSize 批量大小
     * @return 迁移的数据总量
     */
    long migrateDataWithCondition(String tableName, String whereClause, int batchSize);

    /**
     * 验证Oracle和MySQL数据库中的数据是否一致
     * @param tableName 表名
     * @return 是否一致
     */
    boolean verifyData(String tableName);

    /**
     * 获取表的元数据信息
     * @param tableName 表名
     * @return 元数据信息列表
     */
    List<String> getTableMetadata(String tableName);

    /**
     * 获取表的记录总数
     * @param tableName 表名
     * @return 记录总数
     */
    long getTableCount(String tableName);
}